/**********************************************************
	转换显示字符串头文件vgastr.h
***********************************************************/

#ifndef _VGASTR_H
#define _VGASTR_H

void init_curs();

void set_curs(u32_t x, u32_t y);

void GxH_strwrite(char_t *str, cursor_t *cursptr);

char *numberk(char_t *str, uint_t n, sint_t base);

void clear_screen(u16_t srrv);

void put_one_char(char_t cr, uint_t x, uint_t y);

void close_curs();

void vsprintfk(char_t *buf, const char_t *fmt, va_list_t args);

void kprint(const char_t *fmt, ...);

/**
 * 1. 换行
 * 2. 增加空格
 * 3. 显示的大小限制(x:80 y:25), 超过大小清屏
 */
KLINE void current_curs(cursor_t *cp, u32_t c_flg)
{
    // 换行，y增加，x归0
    if (c_flg == VGACHAR_LR_CFLG) {
        cp->y++;
        cp->x = 0;

        if (cp->y > 24) {
            cp->y = 0;
            clear_screen(VGADP_DFVL);
        }

        return ;
    }

    // 增加空格 x+2
    if (c_flg == VGACHAR_DF_CFLG) {
        cp->x += 2;
        if (cp->x > 159) {
            cp->x = 0;
            cp->y++;

            if (cp->y > 24) {
                cp->y = 0;
                clear_screen(VGADP_DFVL);
            }

            return ;
        }
    }

    return ;
}

#endif